package com.insigma.business.qrcode.soldier.util;

import com.alibaba.fastjson.JSONArray;
import com.insigma.business.qrcode.soldier.entity.InsuredInfoEntity;
import org.apache.logging.log4j.util.Strings;

import java.util.*;
import java.util.stream.Collectors;


public class ThirdPartyDealUtils {

    public static Map<String, String> mszdMap;

    public static List<InsuredInfoEntity> fileSocialSecurity(String socialSecurity) {
        if (Strings.isBlank(socialSecurity)) {
            return null;
        }
        List<InsuredInfoEntity> insuredInfoEntities = JSONArray.parseArray(socialSecurity, InsuredInfoEntity.class);
        insuredInfoEntities = insuredInfoEntities.stream().filter(s -> notAllNo(s)).collect(Collectors.toList());
        Collections.sort(insuredInfoEntities, new Comparator<InsuredInfoEntity>() {
            @Override
            public int compare(InsuredInfoEntity o1, InsuredInfoEntity o2) {
                return o2.getAae036().compareTo(o1.getAae036());
            }
        });
        return insuredInfoEntities;
    }

    private static boolean notAllNo(InsuredInfoEntity entity) {
        if ("Y".equals(entity.getBac601()) || "Y".equals(entity.getBac603()) || "Y".equals(entity.getBad006())
                || "Y".equals(entity.getBad007()) || "Y".equals(entity.getBad008()) || "Y".equals(entity.getBad009())) {
            return true;
        }
        return false;
    }

    public static String getMszdName(String code) {
        if (Strings.isBlank(code)) {
            return code;
        }
        initMszdMap();
        String s = mszdMap.get(code);
        if (s == null) {
            return code;
        }
        return s;
    }

    public static String getMszdCnnName(String code) {
        if (Strings.isBlank(code)) {
            return code;
        }
        initMszdMap();
        String s = mszdMap.get(code);
        return s;
    }

    public static String getCodeByNameLike(String name) {
        if (Strings.isBlank(name)) {
            return null;
        }
        initMszdMap();

        for (Map.Entry<String, String> entry : mszdMap.entrySet()) {
            if (entry.getValue().contains(name)) {
                return entry.getKey();
            }
        }
        return null;
    }

    
    private static void initMszdMap(){
        if (mszdMap == null) {
            Map<String, String> map = new HashMap<>();
            map.put("330109_017", "残疾人职工基本养老保险补助");
            map.put("330109_018", "来萧务工人员子女教育资助");
            map.put("330100_061", "节日临时生活补助");
            map.put("330100_026", "中职国家助学金");
            map.put("330100 008", "孤儿及困境儿童物价补贴发放");
            map.put("330100_068", "慈善资金拨付");
            map.put("330100_025", "普通高中国家助学金");
            map.put("330100_023", "企业退休人员节日慰问费");
            map.put("330100_067", "市残联通用政策");
            map.put("330100_020", "残疾人医疗保险补助-旧");
            map.put("330100 001", "困难残疾人生活补贴");
            map.put("330109_020", "萧山区社会组织创新发展奖励（补助）");
            map.put("330112_003", "劳模医疗待遇");
            map.put("330110_019", "农村退休独生子女父母参加城乡居民社会养老保险补助富阳区");
            map.put("330112_002", "特困职工家庭生活救助金给付");
            map.put("330100_070", "残疾人医疗保险补助");
            map.put("330110_016", "农村闲置房发展民宿项目奖励");
            map.put("330100_035", "独生子女父母奖励费");
            map.put("330100_033", "中职政府奖学金");
            map.put("330100_034", "农村部分计划生育家庭奖励扶助金");
            map.put("330106_008", "精神残疾人住院补助");
            map.put("330111_001", "残疾人城乡居民基本医疗保险补助");
            map.put("330106_009", "精神残疾人服药补助");
            map.put("330111_003", "困难群众水、电、气（燃料）补贴");
            map.put("330100_039", "高耗能农业机械报废补偿");
            map.put("330104_013", "江干区〃四季惠民〃系列政策");
            map.put("330100 063", "义务教育困难生生活补助");
            map.put("330110_001", "计划生育家庭〃送温暖慰问金〃发放");
            map.put("330100_004", "残疾人轮椅车燃油补贴");
            map.put("330100_005", "残疾人就学救助补贴");
            map.put("330100_002", "重度残疾人护理补贴");
            map.put("330100_047", "福彩暖万家");
            map.put("330100_045", "市临时救助对象救助金给付（支出型）");
            map.put("330100_042", "农机购置补贴");
            map.put("330109_004", "大中型水库移民后期扶持项目.贷款贴息项目");
            map.put("330100_008", "孤儿及困境儿童物价补贴发放");
            map.put("330100_009", "市临时救助对象救助金给付（急难型）");
            map.put("330100_006", "残疾人津贴");
            map.put("330100 028", "退出现役的分散安置的一级至四级残疾军人护理费的给付");
            map.put("330100_007", "高龄津贴发放");
            map.put("330109_006", "大中型水库移民后期扶持项目.职业技能培训项目");
            map.put("330109_005", "大中型水库移民后期扶持项目一帮困项目");
            map.put("330104_002", "困难家庭一次性重大疾病医疗补助1");
            map.put("330100_051", "区临时救助对象救助金给付");
            map.put("330100_052", "大中型水库移民直接补助");
            map.put("330100_015", "“春风行动〃送温暖慰问金发放");
            map.put("330100_059", "森林生态效益补偿资金");
            map.put("330100 018", "社会特殊救助对象（精简退职、五八城迁、农婚知青、五六支农、民政代管）补助");
            map.put("330102 001", "困难家庭一次性重大疾病医疗补助");
            map.put("330100_016", "困境儿童基本生活费给付");
            map.put("330100_013", "特困人员救助供养保障金给付");
            map.put("330100_014", "“春风行动〃送清凉慰问金发放");
            map.put("330100_011", "最低生活保障对象保障金给付");
            map.put("330100_055", "残疾人阳光慰问");
            map.put("330100_012", "最低生活保障边缘家庭保障金给付");
            map.put("330100_054", "残疾人重大疾病医疗救助");
            map.put("330109 016", "医疗困难特殊救助");
            map.put("330100 013", "特困人员救助供养保障金给付");
            map.put("330100_019", "残疾人基本养老保险补助-旧");
            map.put("330100_017", "征地农转非劳动年龄段以上人员生活补贴");
            map.put("330100 016", "困境儿童基本生活费给付");
            map.put("330100_018", "社会特殊救助对象（精简退职、五八城迁、农婚知青、五六支农、民政代管）补助");
            map.put("330100_021", "物价补贴（部分优抚对象临时性生活补助给付困难救助）");
            map.put("330100_022", "部分农村籍退役士兵认定及老年生活补助给付");
            map.put("330100_027", "定期生活补助"); 
            map.put("330100_028", "退出现役的分散安置的一级至四级残疾军人护理费的给付");
            map.put("330100_029", "伤残人员抚恤待遇发放");
            map.put("330100_030", "建国后参战和参加核试验军队退役人员抚恤优待金发放");
            map.put("330100_031", "随军家属未就业补贴");
            map.put("330100_056", "5-6级精神类残疾军人护理费");
            map.put("330100_057", "随调家属货币化安置费");
            map.put("600000_001", "两参人员定补");
            mszdMap = map;
        }
    }


}
